home *** CD-ROM | disk | FTP | other *** search
- ;;; -*- Mode:Lisp; Package:User; Base:10; Lowercase:T; Syntax:Common-Lisp -*-
- ;;; ===========================================================================
- ;;; System Maintenance
- ;;; ===========================================================================
- ;;; (c) Copyright 1989, 1991 Cornell University
-
- ;;; $Id: maintenance.lisp,v 1.1 1991/10/21 15:28:04 rz Exp $
-
- (in-package "USER")
-
- (defun load-weyl-version ()
- (cond ((probe-file *weyl-version-file*)
- (load *weyl-version-file* :verbose nil))
- (t (setq *weyl-version* (list 1 0)))))
-
- (defun dump-weyl-version ()
- (with-open-file (file *weyl-version-file*
- :direction :output
- :if-exists :supersede)
- (format file ";; Weyl version ~D.~D~%~
- (in-package \"USER\")~
- (setq *weyl-version* (list ~D ~D))~3%"
- (first *weyl-version*) (second *weyl-version*)
- (first *weyl-version*) (second *weyl-version*))))
-
- (defun next-major-weyl-version ()
- (load-weyl-version)
- (incf (first *weyl-version*))
- (setf (second *weyl-version*) 0)
- (dump-weyl-version))
-
- (defun next-minor-weyl-version ()
- (load-weyl-version)
- (incf (second *weyl-version*))
- (dump-weyl-version))
-
- (defun load-weyl ()
- (defsys::load-system 'weyl)
- (load-weyl-version)
- (pushnew :weyl *features*)
- (funcall (intern "RESET-DOMAINS" 'weyli))
- (funcall (intern "INITIALIZE-CONTEXTS" 'weyli))
- (format t ";;; Weyl ~D.~D loaded. ~%"
- (first *weyl-version*) (second *weyl-version*))
- (values))
-
- (defun compile-weyl ()
- (flet ((compile-if-necessary (file)
- (let ((src (make-pathname
- :name file
- :type (first (eval (intern "*SUFFIXES*" 'defsys)))
- :device (pathname-device *weyl-directory*)
- :directory (pathname-directory *weyl-directory*)))
- (obj (make-pathname
- :name file
- :type (rest (eval (intern "*SUFFIXES*" 'defsys)))
- :device (pathname-device *weyl-directory*)
- :directory (pathname-directory *weyl-directory*))))
- (when (or (not (probe-file obj))
- (> (file-write-date src) (file-write-date obj)))
- (compile-file src)
- (load obj)))))
- (compile-if-necessary "sysdef")
- (compile-if-necessary "defsystem")
- (compile-if-necessary "maintenance")
- (defsys:compile-system 'weyl)
- (next-minor-weyl-version)))
-
- #+Lucid
- (defun dump-weyl (&optional (name "weyl"))
- (load-weyl)
- (multiple-value-bind (seconds minutes hour date month year d-o-w d-s-t t-z)
- (decode-universal-time (get-universal-time))
- (declare (ignore seconds minutes hour d-o-w d-s-t t-z))
- (let ((file (make-pathname
- :name #+MIPS "weyl-mips"
- #+SUN4 "weyl-sun4"
- :directory (pathname-directory *weyl-directory*)))
- (archive (format nil
- #+MIPS "~A/~A-mips-~D-~D-~D-~D"
- #+SUN4 "~A/~A-sun4-~D-~D-~D-~D"
- *weyl-archive-directory*
- name month date year
- (+ minutes (* 100 hour))))
- (banner (weyl-banner)))
- (declare (special system::*enter-top-level-hook*))
- (when (probe-file file)
- (delete-file file))
- (user::shell (format nil "ln -s ~A ~A" archive file))
- (setq system::*enter-top-level-hook*
- #'(lambda ()
- (format t ";;; ~A~2%" banner)
- (lucid::default-enter-top-level-hook)))
- (disksave file :full-gc t)
- (format t ";;; Weyl ~D.~D successfully dumped into ~A~%~
- ;;; and link was created to it from ~A"
- (first *weyl-version*) (second *weyl-version*)
- archive file))))
-
- (defun weyl-banner ()
- (multiple-value-bind (second minute hour date month year day-of-week)
- (decode-universal-time (get-universal-time))
- (declare (ignore second))
- (format nil "Weyl Version ~D.~D, saved ~2D:~2D ~A, ~A ~D, ~D"
- (first *weyl-version*) (second *weyl-version*)
- hour minute
- (second (assoc day-of-week
- '((0 "Monday") (1 "Tuesday") (2 "Wednesday")
- (3 "Thursday") (4 "Friday") (5 "Saturday")
- (6 "Sunday"))))
- (second (assoc month
- '((1 "January") (2 "February") (3 "March")
- (4 "April") (5 "May") (6 "June") (7 "July")
- (8 "August") (9 "September") (10 "October")
- (11 "November") (12 "December"))))
- date
- year)))
-
- (defsys:defsystem weyl
- (:default-pathname #.*weyl-directory*
- :default-package weyl)
- #-(or CMU Allegro)
- walk
- #+(or CMU Allegro)
- lisp-support
- #-(or CMU Allegro)
- (lisp-support :load-after (walk))
- (domain-support :load-before-compile (lisp-support))
- (algebraic-domains :load-before-compile (lisp-support domain-support))
- (general :load-before-compile (lisp-support domain-support algebraic-domains))
- (sets :load-before-compile (lisp-support domain-support algebraic-domains))
- (direct-sums :load-before-compile (lisp-support domain-support algebraic-domains sets))
- (lisp-numbers :load-before-compile
- (lisp-support domain-support algebraic-domains))
- (avl :load-before-compile (lisp-support domain-support algebraic-domains))
- (rational-integers :load-before-compile
- (lisp-support domain-support algebraic-domains))
- (gfp :load-before-compile (lisp-support domain-support lisp-numbers algebraic-domains))
- (bigfloat :load-before-compile
- (lisp-support domain-support algebraic-domains))
- (quotient-fields :load-before-compile
- (lisp-support domain-support general algebraic-domains))
- (rational-numbers :load-before-compile
- (lisp-support domain-support algebraic-domains quotient-fields))
- (poly-tools :load-before-compile
- (lisp-support domain-support general algebraic-domains))
- (mpolynomial :load-before-compile
- (lisp-support domain-support general algebraic-domains))
- (upolynomial :load-before-compile
- (lisp-support domain-support algebraic-domains))
- (epolynomial :load-before-compile
- (lisp-support domain-support algebraic-domains mpolynomial))
- (grobner :load-before-compile
- (lisp-support domain-support algebraic-domains mpolynomial))
- (rational-functions :load-before-compile
- (lisp-support domain-support general algebraic-domains
- quotient-fields))
- (morphisms :load-before-compile
- (lisp-support domain-support algebraic-domains mpolynomial))
- (differential-domains :load-before-compile
- (lisp-support domain-support general algebraic-domains
- mpolynomial))
- (algebraic-extension :load-before-compile
- (lisp-support domain-support general algebraic-domains
- mpolynomial))
- (coercions :load-before-compile
- (lisp-support domain-support algebraic-domains))
- (vector :load-before-compile (lisp-support domain-support algebraic-domains sets))
- (projective-space :load-before-compile
- (lisp-support domain-support algebraic-domains vector))
- (quaternions :load-before-compile
- (lisp-support domain-support algebraic-domains sets vector))
- (matrix :load-before-compile
- (lisp-support domain-support algebraic-domains)))
-
-